//package com.yixing.tech.entity.controller;
//
//import com.yixing.tech.common.base.BaseControl;
//import com.yixing.tech.common.base.BusinessException;
//import com.yixing.tech.common.base.ConditionsVO;
//import com.yixing.tech.common.base.PageRow;
//import com.yixing.tech.entity.entity.ObjStatus;
//import com.yixing.tech.entity.service.IObjService;
//import com.yixing.tech.common.vo.s3.DictVO;
//import com.yixing.tech.common.vo.s3.WebPageVO;
//import com.yixing.tech.common.vo.s5.ObjVO;
//import com.mongodb.MongoNamespace;
//import com.mongodb.client.model.RenameCollectionOptions;
//import org.bson.types.ObjectId;
//import org.springframework.data.mongodb.core.MongoTemplate;
//import org.springframework.data.mongodb.core.query.Criteria;
//import org.springframework.data.mongodb.core.query.Query;
//import org.springframework.data.mongodb.core.query.Update;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//import java.util.List;
//import java.util.Set;
//
///**
// * @author yixing tech
// */
//@RestController
//@CrossOrigin
//@RequestMapping(value = "/obj")
//public class ObjController extends BaseControl {
//
//    @Resource
//    IObjService objService;
//
//    @Resource
//    MongoTemplate mongoTemplate;
//
//    @PostMapping("/insert")
//    public Rs<Object> save(@RequestBody ObjVO map) throws BusinessException {
//         commonService.fillCreateUser(map);
//        objService.add(map);
//        return Rs.ok();
//    }
//    @PostMapping("/clone")
//    public Rs<Object> clone(@RequestBody ObjVO map) throws BusinessException {
//         commonService.fillCreateUser(map);
//        objService.cloneObj(map);
//        return Rs.ok();
//    }
//
//    @PostMapping("/listPage")
//    public Rs<Object> listPage(@RequestBody PageRow<ConditionsVO> vo) throws BusinessException {
//        vo.getCondition(ConditionsVO.class).setTenantId(getTenantId());
//        return Rs.ok(objService.listPage(vo));
//    }
//
//    @PostMapping("/list")
//    public Rs<Object> list(@RequestBody ConditionsVO vo) throws BusinessException {
//        vo.setTenantId(getTenantId());
//        return Rs.ok(objService.list(vo));
//    }
//
//    @PostMapping("/update/{id}")
//    public Rs<Object> update(@PathVariable String id, @RequestBody ObjVO map) throws BusinessException {
//        commonService.fillUpdateUser(map);
//        map.setId(id);
//        objService.update(map);
//        return Rs.ok();
//    }
//
//    @PostMapping("/status")
//    public Rs<Object> status(@RequestBody ObjVO map) throws BusinessException {
//        commonService.fillUpdateUser(map);
//        objService.update(map);
//        return Rs.ok();
//    }
//
//    @GetMapping("/reset/{id}")
//    public Rs<Object> reset(@PathVariable String id) throws BusinessException {
//        ObjVO vo = new ObjVO();
//        vo.setId(id);
//        vo.setStatus(ObjStatus.deft.name());
//        commonService.fillUpdateUser(vo);
//        objService.update(vo);
//        return Rs.ok();
//    }
//
//    @DeleteMapping("/{id}")
//    public Rs<Object> delete(@PathVariable String id) throws BusinessException {
//        objService.deleteById(id);
//        return Rs.ok();
//    }
//
//    @GetMapping("/{id}")
//    public Rs<Object> get(@PathVariable String id) throws BusinessException {
//        return Rs.ok(objService.queryById(id,getApiUser()));
//    }
//
//    @GetMapping("/added/{id}")
//    public Rs<Object> added(@PathVariable String id) throws BusinessException {
//        ObjVO objVO = new ObjVO();
//         commonService.fillCreateUser(objVO);
//        objVO.setId(id);
//        objService.addedObj(objVO);
//        return Rs.ok();
//    }
//
//    @GetMapping("/added")
//    public Rs<Object> added() throws BusinessException {
//        objService.addedObj();
//        return Rs.ok();
//    }
//
////    @PostMapping("/find")
////    public Rs<Object> get(@RequestBody ObjVO objVO) throws BusinessException {
////        return Rs.ok(objService.queryByCondition(objVO));
////    }
//
//    @PostMapping("{objId}/config/{type}/save")
//    public Rs<Object> saveConfig(@PathVariable String objId, @PathVariable String type, @RequestBody List<ObjVO.AttrConfig> list) throws BusinessException {
//        objService.saveOrUpdateConfig(objId, type, list);
//        return Rs.ok();
//    }
//
//    @GetMapping("/{id}/config/{type}")
//    public Rs<Object> getConfig(@PathVariable String id, @PathVariable String type) throws BusinessException {
//        return Rs.ok(objService.getConfig(id, type));
//    }
//
//
//    @GetMapping("/test")
//    public Rs<Object> test() throws BusinessException {
//        Set<String> tables = mongoTemplate.getCollectionNames();
//        String dbName = mongoTemplate.getDb().getName();
//        for (String name : tables) {
//            if (!name.startsWith("entity")) continue;
//            System.out.println("------:" + name);
//            String code = name.split("_")[2];
//            ObjVO cond = new ObjVO();
//            cond.setCode(code);
//            cond = mongoTemplate.findOne(Query.query(Criteria.where("code").is(code)), ObjVO.class, "obj");
//            if (cond == null || !StringUtils.hasText(cond.getId())) continue;
//            mongoTemplate.getCollection(name).renameCollection(new MongoNamespace(dbName + ".entity_" + cond.getId()), new RenameCollectionOptions().dropTarget(true));
//        }
//        return Rs.ok();
//    }
//
//    @GetMapping("/test2")
//    public Rs<Object> test2() throws BusinessException {
//        List<WebPageVO> list = mongoTemplate.findAll(WebPageVO.class, "webPage");
//        for (WebPageVO obj : list) {
//            DictVO dict = obj.getType();
//            if (dict == null) continue;
//            if ("624e5135a6b9f60c62bc2b9b".equals(dict.getId())) {
//                String code = obj.getUri();
//                ObjVO cond = new ObjVO();
//                cond.setCode(code);
//                cond = mongoTemplate.findOne(Query.query(Criteria.where("code").is(code)), ObjVO.class, "obj");
//                if (cond == null || !StringUtils.hasText(cond.getId())) continue;
//
//                Query query = new Query();
//                query.addCriteria(Criteria.where("_id").is(new ObjectId(obj.getId())));
//                Update update = new Update();
//                try {
//                    update.set("uri", cond.getId());
//                    mongoTemplate.upsert(query, update, "webPage");
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        return Rs.ok();
//    }
//
//    @GetMapping("/test1")
//    public Rs<Object> test1() throws BusinessException {
//        List<ObjVO> list = objService.list(new ObjVO());
//        for (ObjVO obj : list) {
//            List<ObjVO.AttrVO> attrs = obj.getAttrs();
//            if (attrs == null) continue;
//            boolean needEditor = false;
//            for (ObjVO.AttrVO attr : attrs) {
//                if ("obj".equals(attr.getType())) {
//                    String code = attr.getReference().toString();
//                    ObjVO cond = new ObjVO();
//                    cond.setCode(code);
//                    cond = mongoTemplate.findOne(Query.query(Criteria.where("code").is(code)), ObjVO.class, "obj");
//                    if (cond == null || !StringUtils.hasText(cond.getId())) continue;
//                    attr.setReference(cond.getId());
//                    needEditor = true;
//                }
//            }
//            if (needEditor) {
//                objService.update(obj);
//            }
//        }
//        return Rs.ok();
//    }
//
//}
